]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
layout: Check again for primary monitor after startup animation idle
author13r0ck <bnr@tuta.io>
Tue, 1 Feb 2022 20:04:19 +0000 (13:04 -0700)
committerMarge Bot <marge-bot@gnome.org>
Sun, 20 Mar 2022 22:48:51 +0000 (22:48 +0000)
On some hardware combinations the display can be known, then unknown again. Meaining that
when the update monitors function is called it will have a value, then be called again
setting this.primaryMonitor to null. If the timing is just right gnome shell will
loadBackground, then by the time the animation is ready the monitor will be gone,
thus methods will be called on a null value. This adds more checks for a valid
primary monitor, and wont play the animation until the system is idle AND has a valid
priamry monitor.

Fixes: #5003
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2144>

js/ui/layout.js

index e629f62807373da9f398609391f11c2dcf26745a..0f279f86c800b9859cd9a1c0f2c662fc1c8ad070 100644 (file)
@@ -650,10 +650,14 @@ var LayoutManager = GObject.registerClass({
             // This helps to prevent us from running the animation
             // when the system is bogged down
             const id = GLib.idle_add(GLib.PRIORITY_LOW, () => {
-                this._systemBackground.show();
-                global.stage.show();
-                this._prepareStartupAnimation();
-                return GLib.SOURCE_REMOVE;
+                if (this.primaryMonitor) {
+                    this._systemBackground.show();
+                    global.stage.show();
+                    this._prepareStartupAnimation();
+                    return GLib.SOURCE_REMOVE;
+                } else {
+                    return GLib.SOURCE_CONTINUE;
+                }
             });
             GLib.Source.set_name_by_id(id, '[gnome-shell] Startup Animation');
         });